{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "FallDetection_Image_Based_Models.ipynb",
      "version": "0.3.2",
      "provenance": [],
      "collapsed_sections": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/ryankemmer/FallDetection/blob/master/FallDetection_Image_Based_Models.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ku-ZiBPfdl-O",
        "colab_type": "text"
      },
      "source": [
        "#Initialize Runtime"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QsP7rQmyTfBY",
        "colab_type": "code",
        "outputId": "5d267d28-fad6-4e39-ca11-54c32c148dfb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive', force_remount=True)\n",
        "\n",
        "#initialize array of categoires\n",
        "categories = ['Coffee_room_01','Home_01','validation','test']"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iCUECX_2diRR",
        "colab_type": "text"
      },
      "source": [
        "# Load in Image Data"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NMA0RAgrTijs",
        "colab_type": "code",
        "outputId": "c949adf8-5077-4b83-ce8d-33116c056203",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "import matplotlib.pyplot as plt    # for plotting the images\n",
        "%matplotlib inline\n",
        "import numpy as np\n",
        "from PIL import Image\n",
        "from keras.utils import np_utils\n",
        "from skimage.transform import resize\n",
        "import pandas as pd\n",
        "import os\n",
        "import glob\n",
        "import numpy as np\n",
        "from keras.utils import np_utils\n",
        "from keras.utils import to_categorical\n",
        "\n",
        "#total videos\n",
        "TotalTrain = 40\n",
        "TotalTest = 10\n",
        "\n",
        "#number of samples per activity\n",
        "A = 20\n",
        "#of frames per sample (timesteps)\n",
        "B = 30\n",
        "\n",
        "X_train = [ ]\n",
        "X_test = [ ]\n",
        "\n",
        "Y_train = np.zeros((TotalTrain*A*2,1)) #create empty array for y data\n",
        "Y_test = np.zeros((TotalTest*A*2,1))\n",
        "\n",
        "#initialize counters\n",
        "trainframecount = 0\n",
        "testframecount = 0\n",
        "\n",
        "#loop through categories\n",
        "for i in categories:\n",
        "  \n",
        "  if(str(i) == 'test'):\n",
        "    break\n",
        "  #count the number of videos in category\n",
        "  path = '/content/drive/My Drive/Fall Detection/' + str(i) + '/Annotation_files'\n",
        "  list = os.listdir(path)\n",
        "  numvideos = len(list)\n",
        "  \n",
        "  #change into annotations file folder\n",
        "  print(\"Entering folder \" + str(i) + \", which has \" + str(numvideos) + \" videos to process\")\n",
        "  os.chdir(path)\n",
        "  \n",
        "  #separate if test dataset\n",
        "  if (str(i) == 'validation'):\n",
        "     checker = True\n",
        "  else:\n",
        "     checker = False   \n",
        "    \n",
        "  #loop through each category\n",
        "  j = 0\n",
        "  while (j < 20):\n",
        "    \n",
        "    #break if 10+ videos are processed from the validation set\n",
        "    if(j > 9 and checker == True):\n",
        "      break\n",
        "    \n",
        "    #count the number of frames in each video\n",
        "    path = '/content/drive/My Drive/Fall Detection/' + str(i) + '/testdata/video' + str(j)\n",
        "    list = os.listdir(path) \n",
        "    numframes = len(list)\n",
        "    \n",
        "    #read in frames and determine beginning and ending frames of the fall\n",
        "    filename = '/content/drive/My Drive/Fall Detection/' + str(i) + '/Annotation_files/video (' + str(j+1) + ').txt'\n",
        "    dummydata = pd.read_csv(filename, sep=\" \", header=None, nrows=2)\n",
        "    frame1 = dummydata[0][0] \n",
        "    frame2 = dummydata[0][1] \n",
        "    frame1 = int(frame1) - 5\n",
        "    frame2 = int(frame2) + 30\n",
        "    \n",
        "    #change directory to testdata folder\n",
        "    path = '/content/drive/My Drive/Fall Detection/' + str(i) + \"/testdata/video\" + str(j)\n",
        "    os.chdir(path)\n",
        "    print(\"Video \" + str(j) + \": Processing \" + str(numframes) + \" frames.\")\n",
        "        \n",
        "    #add all frames into array\n",
        "    k = 0\n",
        "    vidarray = []\n",
        "    \n",
        "    while (k < numframes):\n",
        "      img = Image.open('frame' + str(k) + '.jpg').resize((64,64))\n",
        "      img_array = np.array(img)\n",
        "      vidarray.append(img_array)\n",
        "      k += 1\n",
        "      \n",
        "    videoX = np.array(vidarray)\n",
        "    \n",
        "    #split video array into sets for fall, walking, and afterfall\n",
        "    FallSet = videoX[frame1:frame2,:,:,:]\n",
        "    WalkSet = videoX[0:frame1-1,:,:,:]\n",
        "    #AfterFallSet = videoX[frame2+1:len(videoX),:,:,:]  \n",
        " \n",
        "    #capture falls\n",
        "    for _ in range(A):\n",
        "      X = []\n",
        "      idx = np.random.randint(0,len(FallSet)-B)\n",
        "      X = FallSet[idx:idx+B,:,:,:]\n",
        "      if (checker == False):\n",
        "        X_train.append(X)\n",
        "        Y_train[trainframecount,:] = 0\n",
        "        trainframecount += 1\n",
        "      else:\n",
        "        X_test.append(X)\n",
        "        Y_test[testframecount,:] = 0\n",
        "        testframecount += 1\n",
        "      \n",
        "    #capture walking\n",
        "    for _ in range(A):\n",
        "      X = []\n",
        "      idx = np.random.randint(0,len(WalkSet)-B)\n",
        "      X = WalkSet[idx:idx+B,:,:,:]\n",
        "      if (checker == False):\n",
        "        X_train.append(X)\n",
        "        Y_train[trainframecount,:] = 1\n",
        "        trainframecount += 1\n",
        "      else:\n",
        "        X_test.append(X)\n",
        "        Y_test[testframecount,:] = 1\n",
        "        testframecount += 1\n",
        "     \n",
        "    j += 1   \n",
        "\n",
        "\n",
        "#load images to np array\n",
        "X_train = np.array(X_train)\n",
        "X_test = np.array(X_test)\n",
        "\n",
        "#verify data works\n",
        "data = X_train[1,10,:,:,:]\n",
        "plt.imshow(data)\n",
        "\n",
        "#reshape Y data to categorical\n",
        "Y_train = to_categorical(Y_train)\n",
        "Y_test = to_categorical(Y_test)\n",
        "\n",
        "print(\"Finished creating input array.\")\n",
        "print(\"Total train inputs: \" + str(trainframecount))\n",
        "print(\"Total test inputs: \" +  str(testframecount))\n",
        "\n",
        "print(\"X train: \" + str(X_train.shape))\n",
        "print(\"Y train: \" + str(Y_train.shape))\n",
        "print(\"X test: \" + str(X_test.shape))\n",
        "print(\"Y test: \" + str(Y_test.shape))\n",
        " \n"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Entering folder Coffee_room_01, which has 20 videos to process\n",
            "Video 0: Processing 157 frames.\n",
            "Video 1: Processing 306 frames.\n",
            "Video 2: Processing 304 frames.\n",
            "Video 3: Processing 207 frames.\n",
            "Video 4: Processing 181 frames.\n",
            "Video 5: Processing 239 frames.\n",
            "Video 6: Processing 174 frames.\n",
            "Video 7: Processing 258 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 362 frames.\n",
            "Video 10: Processing 483 frames.\n",
            "Video 11: Processing 182 frames.\n",
            "Video 12: Processing 244 frames.\n",
            "Video 13: Processing 176 frames.\n",
            "Video 14: Processing 140 frames.\n",
            "Video 15: Processing 177 frames.\n",
            "Video 16: Processing 269 frames.\n",
            "Video 17: Processing 213 frames.\n",
            "Video 18: Processing 444 frames.\n",
            "Video 19: Processing 182 frames.\n",
            "Entering folder Home_01, which has 25 videos to process\n",
            "Video 0: Processing 264 frames.\n",
            "Video 1: Processing 240 frames.\n",
            "Video 2: Processing 240 frames.\n",
            "Video 3: Processing 240 frames.\n",
            "Video 4: Processing 192 frames.\n",
            "Video 5: Processing 192 frames.\n",
            "Video 6: Processing 216 frames.\n",
            "Video 7: Processing 285 frames.\n",
            "Video 8: Processing 336 frames.\n",
            "Video 9: Processing 312 frames.\n",
            "Video 10: Processing 312 frames.\n",
            "Video 11: Processing 216 frames.\n",
            "Video 12: Processing 240 frames.\n",
            "Video 13: Processing 288 frames.\n",
            "Video 14: Processing 238 frames.\n",
            "Video 15: Processing 264 frames.\n",
            "Video 16: Processing 240 frames.\n",
            "Video 17: Processing 216 frames.\n",
            "Video 18: Processing 192 frames.\n",
            "Video 19: Processing 216 frames.\n",
            "Entering folder validation, which has 15 videos to process\n",
            "Video 0: Processing 216 frames.\n",
            "Video 1: Processing 240 frames.\n",
            "Video 2: Processing 216 frames.\n",
            "Video 3: Processing 271 frames.\n",
            "Video 4: Processing 192 frames.\n",
            "Video 5: Processing 382 frames.\n",
            "Video 6: Processing 159 frames.\n",
            "Video 7: Processing 718 frames.\n",
            "Video 8: Processing 133 frames.\n",
            "Video 9: Processing 215 frames.\n",
            "Finished creating input array.\n",
            "Total train inputs: 1600\n",
            "Total test inputs: 400\n",
            "X train: (1600, 30, 64, 64, 3)\n",
            "Y train: (1600, 2)\n",
            "X test: (400, 30, 64, 64, 3)\n",
            "Y test: (400, 2)\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zTyT1zOChIUJ",
        "colab_type": "text"
      },
      "source": [
        "# Train CNN/ LSTM Model "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "X8irENEeqHRR",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "9ffc50a9-3fcd-4fb9-cf77-7a2860306d9b"
      },
      "source": [
        "from keras.models import Sequential\n",
        "from keras.applications.vgg16 import VGG16\n",
        "from keras.layers import Dense, InputLayer, Dropout, Flatten, Activation\n",
        "from keras.layers.recurrent import LSTM\n",
        "from keras.layers import TimeDistributed\n",
        "from keras.layers.convolutional import Conv1D, Conv2D\n",
        "from keras.layers.convolutional import MaxPooling1D, MaxPooling2D\n",
        "from tensorflow import keras\n",
        "from keras.utils import to_categorical\n",
        "\n",
        "#center the data\n",
        "X_train = X_train/X_train.max()\n",
        "X_test = X_test/X_test.max()\n",
        "\n",
        "model1 = Sequential()\n",
        "\n",
        "model1.add(TimeDistributed(Conv2D(40, (2,2)), input_shape=(30,64,64,3)))\n",
        "model1.add(Activation('relu'))\n",
        "\n",
        "model1.add(TimeDistributed(Conv2D(40, (2,2),activation='relu')))\n",
        "\n",
        "model1.add(TimeDistributed(Dropout(0.5)))\n",
        "model1.add(TimeDistributed(MaxPooling2D(pool_size=2)))\n",
        "model1.add(TimeDistributed(Flatten()))\n",
        "\n",
        "#normalize data\n",
        "\n",
        "model1.add(LSTM(100))\n",
        "model1.add(Dropout(0.5))\n",
        "model1.add(Dense(100, activation='relu'))\n",
        "model1.add(Dropout(0.5))\n",
        "model1.add(Dense(100, activation='relu'))\n",
        "model1.add(Dropout(0.5))\n",
        "model1.add(Dense(2, activation='softmax'))\n",
        "print(model1.summary())\n",
        "model1.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
        "\n",
        "#fit the model\n",
        "history = model1.fit(X_train, Y_train, epochs=100, validation_data=(X_test, Y_test))\n",
        "\n",
        "# summarize history for accuracy\n",
        "plt.plot(history.history['acc'])\n",
        "plt.plot(history.history['val_acc'])\n",
        "plt.title('model accuracy')\n",
        "plt.ylabel('accuracy')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'test'], loc='upper left')\n",
        "plt.show()\n",
        "# summarize history for loss\n",
        "plt.plot(history.history['loss'])\n",
        "plt.plot(history.history['val_loss'])\n",
        "plt.title('model loss')\n",
        "plt.ylabel('loss')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'test'], loc='upper left')\n",
        "plt.show()\n"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING: Logging before flag parsing goes to stderr.\n",
            "W0711 04:31:31.126686 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
            "\n",
            "W0711 04:31:31.144464 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
            "\n",
            "W0711 04:31:31.149111 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
            "\n",
            "W0711 04:31:31.182371 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
            "\n",
            "W0711 04:31:31.191155 139946696898432 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
            "W0711 04:31:31.213948 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3976: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.\n",
            "\n",
            "W0711 04:31:31.500999 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
            "\n",
            "W0711 04:31:31.527457 139946696898432 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
            "\n",
            "W0711 04:31:31.657388 139946696898432 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Use tf.where in 2.0, which has the same broadcast rule as np.where\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "time_distributed_1 (TimeDist (None, 30, 63, 63, 40)    520       \n",
            "_________________________________________________________________\n",
            "activation_1 (Activation)    (None, 30, 63, 63, 40)    0         \n",
            "_________________________________________________________________\n",
            "time_distributed_2 (TimeDist (None, 30, 62, 62, 40)    6440      \n",
            "_________________________________________________________________\n",
            "time_distributed_3 (TimeDist (None, 30, 62, 62, 40)    0         \n",
            "_________________________________________________________________\n",
            "time_distributed_4 (TimeDist (None, 30, 31, 31, 40)    0         \n",
            "_________________________________________________________________\n",
            "time_distributed_5 (TimeDist (None, 30, 38440)         0         \n",
            "_________________________________________________________________\n",
            "lstm_1 (LSTM)                (None, 100)               15416400  \n",
            "_________________________________________________________________\n",
            "dropout_2 (Dropout)          (None, 100)               0         \n",
            "_________________________________________________________________\n",
            "dense_1 (Dense)              (None, 100)               10100     \n",
            "_________________________________________________________________\n",
            "dropout_3 (Dropout)          (None, 100)               0         \n",
            "_________________________________________________________________\n",
            "dense_2 (Dense)              (None, 100)               10100     \n",
            "_________________________________________________________________\n",
            "dropout_4 (Dropout)          (None, 100)               0         \n",
            "_________________________________________________________________\n",
            "dense_3 (Dense)              (None, 2)                 202       \n",
            "=================================================================\n",
            "Total params: 15,443,762\n",
            "Trainable params: 15,443,762\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n",
            "None\n",
            "Train on 1600 samples, validate on 400 samples\n",
            "Epoch 1/100\n",
            "1600/1600 [==============================] - 34s 22ms/step - loss: 0.7651 - acc: 0.4881 - val_loss: 0.6916 - val_acc: 0.5875\n",
            "Epoch 2/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.6965 - acc: 0.5413 - val_loss: 0.6156 - val_acc: 0.7250\n",
            "Epoch 3/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.3563 - acc: 0.8631 - val_loss: 0.4379 - val_acc: 0.8050\n",
            "Epoch 4/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.1307 - acc: 0.9594 - val_loss: 0.3543 - val_acc: 0.8950\n",
            "Epoch 5/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0267 - acc: 0.9956 - val_loss: 0.5283 - val_acc: 0.8675\n",
            "Epoch 6/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0842 - acc: 0.9744 - val_loss: 1.2123 - val_acc: 0.7250\n",
            "Epoch 7/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0520 - acc: 0.9825 - val_loss: 1.0388 - val_acc: 0.8300\n",
            "Epoch 8/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0228 - acc: 0.9919 - val_loss: 0.3306 - val_acc: 0.9325\n",
            "Epoch 9/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0036 - acc: 1.0000 - val_loss: 0.4973 - val_acc: 0.9350\n",
            "Epoch 10/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 9.9609e-04 - acc: 1.0000 - val_loss: 0.5239 - val_acc: 0.9425\n",
            "Epoch 11/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 6.4609e-04 - acc: 1.0000 - val_loss: 0.5664 - val_acc: 0.9425\n",
            "Epoch 12/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 7.8757e-04 - acc: 1.0000 - val_loss: 0.6407 - val_acc: 0.9400\n",
            "Epoch 13/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 5.9948e-04 - acc: 1.0000 - val_loss: 0.6549 - val_acc: 0.9425\n",
            "Epoch 14/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.1962e-04 - acc: 1.0000 - val_loss: 0.6568 - val_acc: 0.9475\n",
            "Epoch 15/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.5609e-04 - acc: 1.0000 - val_loss: 0.6895 - val_acc: 0.9500\n",
            "Epoch 16/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.1459e-04 - acc: 1.0000 - val_loss: 0.7109 - val_acc: 0.9500\n",
            "Epoch 17/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.0242e-04 - acc: 1.0000 - val_loss: 0.7391 - val_acc: 0.9500\n",
            "Epoch 18/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.1870e-04 - acc: 1.0000 - val_loss: 0.7563 - val_acc: 0.9500\n",
            "Epoch 19/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.5720e-04 - acc: 1.0000 - val_loss: 0.6852 - val_acc: 0.9500\n",
            "Epoch 20/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0133 - acc: 0.9969 - val_loss: 0.9240 - val_acc: 0.8300\n",
            "Epoch 21/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0223 - acc: 0.9956 - val_loss: 0.4800 - val_acc: 0.9250\n",
            "Epoch 22/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0040 - acc: 0.9988 - val_loss: 1.9074 - val_acc: 0.7900\n",
            "Epoch 23/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 3.3154e-04 - acc: 1.0000 - val_loss: 2.0505 - val_acc: 0.7950\n",
            "Epoch 24/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.4419e-04 - acc: 1.0000 - val_loss: 2.0671 - val_acc: 0.8000\n",
            "Epoch 25/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 4.2917e-04 - acc: 1.0000 - val_loss: 2.4773 - val_acc: 0.7975\n",
            "Epoch 26/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.7189e-04 - acc: 1.0000 - val_loss: 2.4386 - val_acc: 0.8025\n",
            "Epoch 27/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.0883e-04 - acc: 1.0000 - val_loss: 2.4374 - val_acc: 0.8050\n",
            "Epoch 28/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.0729e-04 - acc: 1.0000 - val_loss: 2.1784 - val_acc: 0.8125\n",
            "Epoch 29/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.5191e-04 - acc: 1.0000 - val_loss: 2.0960 - val_acc: 0.8225\n",
            "Epoch 30/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.2863e-04 - acc: 1.0000 - val_loss: 2.2087 - val_acc: 0.8225\n",
            "Epoch 31/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.0456e-04 - acc: 1.0000 - val_loss: 1.8142 - val_acc: 0.8375\n",
            "Epoch 32/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 8.1598e-05 - acc: 1.0000 - val_loss: 1.9204 - val_acc: 0.8350\n",
            "Epoch 33/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 4.5569e-05 - acc: 1.0000 - val_loss: 2.0164 - val_acc: 0.8350\n",
            "Epoch 34/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 4.8084e-05 - acc: 1.0000 - val_loss: 1.9984 - val_acc: 0.8350\n",
            "Epoch 35/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 8.2282e-05 - acc: 1.0000 - val_loss: 1.9286 - val_acc: 0.8375\n",
            "Epoch 36/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 7.9451e-05 - acc: 1.0000 - val_loss: 1.8295 - val_acc: 0.8475\n",
            "Epoch 37/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 4.4575e-05 - acc: 1.0000 - val_loss: 1.5884 - val_acc: 0.8625\n",
            "Epoch 38/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.9163e-05 - acc: 1.0000 - val_loss: 1.6008 - val_acc: 0.8650\n",
            "Epoch 39/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.8014e-05 - acc: 1.0000 - val_loss: 1.6181 - val_acc: 0.8650\n",
            "Epoch 40/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.3285e-04 - acc: 1.0000 - val_loss: 1.7067 - val_acc: 0.8625\n",
            "Epoch 41/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.2785e-05 - acc: 1.0000 - val_loss: 1.7338 - val_acc: 0.8575\n",
            "Epoch 42/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.9176e-05 - acc: 1.0000 - val_loss: 1.6854 - val_acc: 0.8650\n",
            "Epoch 43/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 6.6132e-05 - acc: 1.0000 - val_loss: 1.7748 - val_acc: 0.8575\n",
            "Epoch 44/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.3502e-05 - acc: 1.0000 - val_loss: 1.8116 - val_acc: 0.8575\n",
            "Epoch 45/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.2425e-05 - acc: 1.0000 - val_loss: 2.0296 - val_acc: 0.8475\n",
            "Epoch 46/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.9853e-05 - acc: 1.0000 - val_loss: 2.0359 - val_acc: 0.8475\n",
            "Epoch 47/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.6117e-05 - acc: 1.0000 - val_loss: 2.0249 - val_acc: 0.8475\n",
            "Epoch 48/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.3346e-05 - acc: 1.0000 - val_loss: 2.0285 - val_acc: 0.8475\n",
            "Epoch 49/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.8878e-05 - acc: 1.0000 - val_loss: 2.0665 - val_acc: 0.8475\n",
            "Epoch 50/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 3.0073e-05 - acc: 1.0000 - val_loss: 2.0530 - val_acc: 0.8475\n",
            "Epoch 51/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.2551e-05 - acc: 1.0000 - val_loss: 2.0318 - val_acc: 0.8475\n",
            "Epoch 52/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 5.7419e-06 - acc: 1.0000 - val_loss: 2.0306 - val_acc: 0.8475\n",
            "Epoch 53/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.4584e-05 - acc: 1.0000 - val_loss: 2.0161 - val_acc: 0.8525\n",
            "Epoch 54/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.2726e-05 - acc: 1.0000 - val_loss: 1.9993 - val_acc: 0.8550\n",
            "Epoch 55/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.4520e-05 - acc: 1.0000 - val_loss: 2.0093 - val_acc: 0.8525\n",
            "Epoch 56/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.0896e-05 - acc: 1.0000 - val_loss: 1.9987 - val_acc: 0.8550\n",
            "Epoch 57/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 3.1869e-05 - acc: 1.0000 - val_loss: 2.0362 - val_acc: 0.8525\n",
            "Epoch 58/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.0265e-05 - acc: 1.0000 - val_loss: 2.0477 - val_acc: 0.8525\n",
            "Epoch 59/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 5.2181e-05 - acc: 1.0000 - val_loss: 2.2419 - val_acc: 0.8350\n",
            "Epoch 60/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 9.9013e-06 - acc: 1.0000 - val_loss: 2.2506 - val_acc: 0.8350\n",
            "Epoch 61/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.0574e-04 - acc: 1.0000 - val_loss: 2.2231 - val_acc: 0.8450\n",
            "Epoch 62/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 8.7497e-06 - acc: 1.0000 - val_loss: 2.1041 - val_acc: 0.8525\n",
            "Epoch 63/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 5.7349e-06 - acc: 1.0000 - val_loss: 2.1131 - val_acc: 0.8525\n",
            "Epoch 64/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.1277e-05 - acc: 1.0000 - val_loss: 2.1356 - val_acc: 0.8500\n",
            "Epoch 65/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 1.7163e-05 - acc: 1.0000 - val_loss: 1.9377 - val_acc: 0.8600\n",
            "Epoch 66/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 9.3169e-06 - acc: 1.0000 - val_loss: 1.8922 - val_acc: 0.8600\n",
            "Epoch 67/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.1334e-05 - acc: 1.0000 - val_loss: 1.9755 - val_acc: 0.8575\n",
            "Epoch 68/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 9.8373e-06 - acc: 1.0000 - val_loss: 1.0854 - val_acc: 0.9250\n",
            "Epoch 69/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 0.0412 - acc: 0.9894 - val_loss: 1.9571 - val_acc: 0.7750\n",
            "Epoch 70/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0167 - acc: 0.9950 - val_loss: 0.0264 - val_acc: 0.9875\n",
            "Epoch 71/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 0.0252 - acc: 0.9925 - val_loss: 0.6897 - val_acc: 0.9000\n",
            "Epoch 72/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 0.0017 - acc: 1.0000 - val_loss: 0.6316 - val_acc: 0.9500\n",
            "Epoch 73/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 3.3907e-04 - acc: 1.0000 - val_loss: 0.6979 - val_acc: 0.9500\n",
            "Epoch 74/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 7.9697e-05 - acc: 1.0000 - val_loss: 0.7214 - val_acc: 0.9500\n",
            "Epoch 75/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.4995e-04 - acc: 1.0000 - val_loss: 0.7669 - val_acc: 0.9500\n",
            "Epoch 76/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 4.2491e-05 - acc: 1.0000 - val_loss: 0.7743 - val_acc: 0.9500\n",
            "Epoch 77/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 6.4956e-05 - acc: 1.0000 - val_loss: 0.7825 - val_acc: 0.9500\n",
            "Epoch 78/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 3.3590e-05 - acc: 1.0000 - val_loss: 0.7873 - val_acc: 0.9500\n",
            "Epoch 79/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 8.3998e-05 - acc: 1.0000 - val_loss: 0.8042 - val_acc: 0.9500\n",
            "Epoch 80/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 6.2040e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 81/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 3.7212e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 82/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.5554e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 83/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 4.0280e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 84/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 5.4874e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 85/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 8.8000e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 86/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.5536e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 87/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.8602e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 88/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 2.4773e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 89/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.4515e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 90/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.3725e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 91/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 5.4990e-06 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 92/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 3.1454e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 93/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 9.2453e-06 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 94/100\n",
            "1600/1600 [==============================] - 25s 16ms/step - loss: 2.0745e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 95/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.5829e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 96/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 6.4592e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 97/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 5.9208e-06 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 98/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 1.2089e-05 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 99/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 7.5296e-06 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n",
            "Epoch 100/100\n",
            "1600/1600 [==============================] - 25s 15ms/step - loss: 7.5108e-06 - acc: 1.0000 - val_loss: 0.8059 - val_acc: 0.9500\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n/H9Gsbwol9BjKgAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vCG3DBaqjvHY",
        "colab_type": "text"
      },
      "source": [
        "# Train Simple LSTM Model "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EKTJ_BbfjwoD",
        "colab_type": "code",
        "outputId": "42498310-68a9-4de9-a4c1-5e0fbf021f02",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 667
        }
      },
      "source": [
        "from keras.models import Sequential\n",
        "from keras.applications.vgg16 import VGG16\n",
        "from keras.layers import Dense, InputLayer, Dropout, Flatten, Activation\n",
        "from keras.layers.recurrent import LSTM\n",
        "from keras.layers import TimeDistributed\n",
        "from keras.layers.convolutional import Conv1D, Conv2D\n",
        "from keras.layers.convolutional import MaxPooling1D, MaxPooling2D\n",
        "from tensorflow import keras\n",
        "from keras.utils import to_categorical\n",
        "\n",
        "\n",
        "#reshape X data\n",
        "X_train = X_train.reshape(-1, B, 64*64*3)\n",
        "X_test = X_test.reshape(-1, B, 64*64*3)\n",
        "\n",
        "#X_train = X_train/X_train.max()\n",
        "#X_test = X_test/X_test.max()\n",
        "\n",
        "model2 = Sequential()\n",
        "model2.add(LSTM(100, input_shape=(B,64*64*3)))\n",
        "model2.add(Dropout(0.5))\n",
        "model2.add(Dense(100, activation='relu'))\n",
        "model2.add(Dense(2, activation='softmax'))\n",
        "print(model2.summary())\n",
        "#model2.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
        "\n",
        "history = model2.fit(X_train, Y_train, epochs=100, validation_data=(X_test, Y_test))\n",
        "\n",
        "print(history.history.keys())\n",
        "# summarize history for accuracy\n",
        "plt.plot(history.history['acc'])\n",
        "plt.plot(history.history['val_acc'])\n",
        "plt.title('model accuracy')\n",
        "plt.ylabel('accuracy')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'test'], loc='upper left')\n",
        "plt.show()\n",
        "# summarize history for loss\n",
        "plt.plot(history.history['loss'])\n",
        "plt.plot(history.history['val_loss'])\n",
        "plt.title('model loss')\n",
        "plt.ylabel('loss')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'test'], loc='upper left')\n",
        "plt.show()\n",
        "\n"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "lstm_5 (LSTM)                (None, 100)               4955600   \n",
            "_________________________________________________________________\n",
            "dropout_8 (Dropout)          (None, 100)               0         \n",
            "_________________________________________________________________\n",
            "dense_10 (Dense)             (None, 100)               10100     \n",
            "_________________________________________________________________\n",
            "dense_11 (Dense)             (None, 2)                 202       \n",
            "=================================================================\n",
            "Total params: 4,965,902\n",
            "Trainable params: 4,965,902\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n",
            "None\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "error",
          "ename": "RuntimeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-22-d9ee294dc719>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     25\u001b[0m \u001b[0;31m#model2.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     26\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 27\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidation_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     28\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     29\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m    950\u001b[0m             \u001b[0msample_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msample_weight\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    951\u001b[0m             \u001b[0mclass_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mclass_weight\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 952\u001b[0;31m             batch_size=batch_size)\n\u001b[0m\u001b[1;32m    953\u001b[0m         \u001b[0;31m# Prepare validation data.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    954\u001b[0m         \u001b[0mdo_validation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36m_standardize_user_data\u001b[0;34m(self, x, y, sample_weight, class_weight, check_array_lengths, batch_size)\u001b[0m\n\u001b[1;32m    679\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0my\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    680\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptimizer\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 681\u001b[0;31m                 raise RuntimeError('You must compile a model before '\n\u001b[0m\u001b[1;32m    682\u001b[0m                                    \u001b[0;34m'training/testing. '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    683\u001b[0m                                    'Use `model.compile(optimizer, loss)`.')\n",
            "\u001b[0;31mRuntimeError\u001b[0m: You must compile a model before training/testing. Use `model.compile(optimizer, loss)`."
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dTMC2Kf2EuTk",
        "colab_type": "text"
      },
      "source": [
        "# Test Models"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1oGG9sD2EAcc",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "f455aeb1-6744-464a-d169-8f6020621d19"
      },
      "source": [
        "Test = 10\n",
        "\n",
        "def loaddata(testnumber):\n",
        "\n",
        "  os.chdir('/content/drive/My Drive/Fall Detection')\n",
        "\n",
        "  #count successful poses\n",
        "  nullposes = 0\n",
        "  successfulposes = 0\n",
        "\n",
        "  #total videos\n",
        "  Videos = 10\n",
        "\n",
        "  #number of samples per activity (walking, falling, laying down)\n",
        "  A = 20\n",
        "  #of frames per sample (timesteps)\n",
        "  B = 30\n",
        "\n",
        "  X = [ ] #creating an empty array for image data\n",
        "  Y = np.zeros((Videos*A*2,1)) #create empty array for y data\n",
        "\n",
        "  #initialize counters\n",
        "  trainframecount = 0\n",
        "  testframecount = 0\n",
        "\n",
        "  i = str(testnumber)\n",
        "\n",
        "  #count the number of videos in category\n",
        "  path = '/content/drive/My Drive/Fall Detection/test/Annotation_files'\n",
        "  list = os.listdir(path)\n",
        "  numvideos = len(list)\n",
        "\n",
        "  #change into annotations file folder\n",
        "  print(\"Entering folder \" + str(i) + \", which has \" + str(numvideos) + \" videos to process\")\n",
        "  os.chdir(path)\n",
        "  \n",
        "  #loop through each category\n",
        "  j = 0\n",
        "  while (j < numvideos):\n",
        "    \n",
        "    #count the number of frames in each video\n",
        "    path = '/content/drive/My Drive/Fall Detection/' + str(i) + '/testdata/video' + str(j)\n",
        "    list = os.listdir(path) \n",
        "    numframes = len(list)\n",
        "    \n",
        "    #read in frames and determine beginning and ending frames of the fall\n",
        "    filename = '/content/drive/My Drive/Fall Detection/' + str(i) + '/Annotation_files/video (' + str(j+1) + ').txt'\n",
        "    dummydata = pd.read_csv(filename, sep=\" \", header=None, nrows=2)\n",
        "    frame1 = dummydata[0][0] \n",
        "    frame2 = dummydata[0][1] \n",
        "    frame1 = int(frame1) - 5\n",
        "    frame2 = int(frame2) + 30\n",
        "    \n",
        "    #change directory to jsondata folder\n",
        "    path = '/content/drive/My Drive/Fall Detection/' + str(i) + \"/testdata/video\" + str(j)\n",
        "    os.chdir(path)\n",
        "    print(\"Video \" + str(j) + \": Processing \" + str(numframes) + \" frames.\")\n",
        "    \n",
        "    \n",
        "    #add all frames into array\n",
        "    k = 0\n",
        "    vidarray = []\n",
        "    \n",
        "    while (k < numframes):\n",
        "      img = Image.open('frame' + str(k) + '.jpg').resize((64,64))\n",
        "      img_array = np.array(img)\n",
        "      vidarray.append(img_array)\n",
        "      k += 1\n",
        "      \n",
        "    videoX = np.array(vidarray)\n",
        "    \n",
        "    #split video array into sets for fall, walking, and afterfall\n",
        "    FallSet = videoX[frame1:frame2,:,:,:]\n",
        "    WalkSet = videoX[0:frame1-1,:,:,:]\n",
        "    #AfterFallSet = videoX[frame2+1:len(videoX),:]  \n",
        " \n",
        "    #capture falls\n",
        "    for _ in range(A):\n",
        "      Xset = []\n",
        "      idx = np.random.randint(0,len(FallSet)-B)\n",
        "      Xset = FallSet[idx:idx+B,:,:,:]\n",
        "      X.append(Xset)\n",
        "      Y[trainframecount,:] = 0\n",
        "      trainframecount += 1\n",
        "      \n",
        "    #capture walking\n",
        "    for _ in range(A):\n",
        "      Xset = []\n",
        "      idx = np.random.randint(0,len(WalkSet)-B)\n",
        "      Xset = WalkSet[idx:idx+B,:,:,:]\n",
        "      X.append(Xset)\n",
        "      Y[trainframecount,:] = 1\n",
        "      trainframecount += 1\n",
        "    \n",
        "    j += 1   \n",
        "  \n",
        "  #reshape Y data to categorical\n",
        "  Y = to_categorical(Y)\n",
        "  \n",
        "  #convert X to np array and normalize\n",
        "  X = np.array(X)\n",
        "  X = X/ X.max()\n",
        "  \n",
        "  return X, Y\n",
        "\n",
        "'''\n",
        "print(\"Finished creating input array.\")\n",
        "print(\"Total train inputs: \" + str(trainframecount))\n",
        "print(\"Total test inputs: \" +  str(testframecount))\n",
        "\n",
        "print(\"X train: \" + str(X.shape))\n",
        "print(\"Y train: \" + str(Y.shape))\n",
        "print(\"X test: \" + str(X.shape))\n",
        "print(\"Y test: \" + str(Y.shape))\n",
        "print(\"null poses: \" + str(nullposes))\n",
        "print(\"successful poses:\" + str(successfulposes))\n",
        "'''\n",
        "\n",
        "from numpy import mean\n",
        "from numpy import std\n",
        "\n",
        "# repeat experiment\n",
        "scores1 = []\n",
        "scores2 = []\n",
        "scores3 = []\n",
        "scores4 = []\n",
        "\n",
        "for r in range(20):\n",
        "  X,Y = loaddata('test')\n",
        "  accuracy1 = model1.evaluate(X, Y, verbose = 0)\n",
        "  accuracy1 = accuracy1[1] * 100.0000\n",
        "  print(accuracy1)\n",
        "  scores1.append(accuracy1)\n",
        "\n",
        "for r in range(20):\n",
        "  X,Y = loaddata('test')\n",
        "  X = X.reshape(-1, B, 64*64*3)\n",
        "  accuracy2 = model.evaluate(X, Y, verbose = 0)\n",
        "  accuracy2 = accuracy2[1] * 100.0000\n",
        "  print(accuracy2)\n",
        "  scores2.append(accuracy2)\n",
        "  \n",
        "for r in range(20):\n",
        "  X,Y = loaddata('test2')\n",
        "  accuracy3 = model1.evaluate(X, Y, verbose = 0)\n",
        "  accuracy3 = accuracy3[1] * 100.0000\n",
        "  print(accuracy3)\n",
        "  scores3.append(accuracy3)\n",
        "\n",
        "for r in range(20):\n",
        "  X,Y = loaddata('test2')\n",
        "  X = X.reshape(-1, B, 64*64*3)\n",
        "  accuracy4 = model.evaluate(X, Y, verbose = 0)\n",
        "  accuracy4 = accuracy4[1] * 100.0000\n",
        "  print(accuracy4)\n",
        "  scores4.append(accuracy4)\n",
        "\n",
        "m1, s1 = mean(scores1), std(scores1)\n",
        "m2, s2 = mean(scores2), std(scores2)\n",
        "m3, s3 = mean(scores3), std(scores3)\n",
        "m4, s4 = mean(scores4), std(scores4)\n",
        "print('Accuracy 1, familiar data: %.3f%% (+/-%.3f)' % (m1, s1))\n",
        "print('Accuracy 2, familiar data: %.3f%% (+/-%.3f)' % (m2, s2))\n",
        "print('Accuracy 1, nonfamilar data: %.3f%% (+/-%.3f)' % (m3, s3))\n",
        "print('Accuracy 2, nonfamilar data: %.3f%% (+/-%.3f)' % (m4, s4))"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "95.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "98.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "97.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "98.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.5\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "97.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "95.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "97.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "97.5\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "97.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "95.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.5\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "97.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "96.5\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.5\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.75\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "44.0\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.25\n",
            "Entering folder test, which has 10 videos to process\n",
            "Video 0: Processing 265 frames.\n",
            "Video 1: Processing 305 frames.\n",
            "Video 2: Processing 227 frames.\n",
            "Video 3: Processing 415 frames.\n",
            "Video 4: Processing 231 frames.\n",
            "Video 5: Processing 1203 frames.\n",
            "Video 6: Processing 206 frames.\n",
            "Video 7: Processing 352 frames.\n",
            "Video 8: Processing 157 frames.\n",
            "Video 9: Processing 350 frames.\n",
            "43.25\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "67.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "65.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "65.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "65.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "64.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "67.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "63.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "66.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "67.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "64.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "66.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "66.25\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "64.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "66.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "62.74999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "65.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "64.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "64.25\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "64.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "65.75\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.24999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.24999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "51.24999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "51.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.74999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.74999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "51.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "51.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.74999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.24999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.24999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.24999999999999\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.5\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "50.0\n",
            "Entering folder test2, which has 10 videos to process\n",
            "Video 0: Processing 285 frames.\n",
            "Video 1: Processing 506 frames.\n",
            "Video 2: Processing 623 frames.\n",
            "Video 3: Processing 402 frames.\n",
            "Video 4: Processing 389 frames.\n",
            "Video 5: Processing 415 frames.\n",
            "Video 6: Processing 217 frames.\n",
            "Video 7: Processing 419 frames.\n",
            "Video 8: Processing 206 frames.\n",
            "Video 9: Processing 269 frames.\n",
            "51.24999999999999\n",
            "Accuracy 1, familiar data: 96.725% (+/-0.715)\n",
            "Accuracy 2, familiar data: 43.763% (+/-0.503)\n",
            "Accuracy 1, nonfamilar data: 65.350% (+/-1.213)\n",
            "Accuracy 2, nonfamilar data: 50.600% (+/-0.348)\n"
          ],
          "name": "stdout"
        }
      ]
    }
  ]
}